import java.util.Scanner;

abstract class Base3 {
    abstract int calculate();
}
class Sub3 extends Base3{

    private int x;
    private int y;

    public Sub3(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public Sub3() {
    }

    @Override
    int calculate() {
              //sum()和avg()
        if (avg()==0) {
            return 0;
        }
        return sum()/avg();
    }
    public int sum() {
        return this.x+this.y;
    }
    public int avg() {
        return sum()/2;
    }
}
class Base {

}
class Sub1 extends Base {

}
class Sub2 extends Base {

}

public class Test2 {

    public static void main(String[] args) {
        //已知抽象类Base中定义了calculate方法，该方法的计算过程依赖于sum()和avg()，
        // 而后两个方法均为抽象方法。要求定义Base的子类Sub类，
        // 并实现父类的抽象方法，使得main函数中的运算逻辑得以正确执行
        Scanner scanner=new Scanner(System.in);
        Base3 base3=new Sub3(scanner.nextInt(),scanner.nextInt());
        System.out.println(base3.calculate());
    }
     public static String getClassName(Base base) {
        if (base instanceof Sub1) {
            Sub1 sub1=(Sub1) base;
            return sub1.getClass().getSimpleName();
        } else if (base instanceof Sub2) {
            Sub2 sub2=(Sub2) base;
            return sub2.getClass().getSimpleName();
        }else {
           return base.getClass().getSimpleName();
        }
     }
    public static void print(Object obj) {
        System.out.println(obj.toString());
    }

    public static void main2(String[] args) throws Exception {
        //父类Base有两个子类：Sub1、Sub2，现有一个方法getClassName()，
        // 要求传入Base类型的实例，在方法内部判定其具体的类型，返回的是类型的简单名字（不含包名），
        Scanner scanner=new Scanner(System.in);
        String classname=scanner.next();
        Base base= (Base) Class.forName(classname).newInstance();
        System.out.println(getClassName(base));
    }
    public static void main1(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
        //已知有三个类：First、Second、Third。要求定义一个打印方法，
        // 支持传入任意引用类型的参数（包括上述三个类），并在方法内部打印出对象的字符串形式。
        Scanner scanner=new Scanner(System.in);
        String classname=scanner.next();
        //写一个方法，将他们的返回值改为实例化的对象
       print(Class.forName(classname).newInstance());
    }
}
class First {
    @Override
    public String toString() {
        return "First";
    }
}
class Second {
    @Override
    public String toString() {
        return "Second";
    }
}
class Third {
    @Override
    public String toString() {
        return "Third";
    }
}